// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Discover the Ozwin Casino Australia Mobile App Experience – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Discover the Ozwin Casino Australia Mobile App Experience

Experience the thrill of Ozwin Casino right at your fingertips with our seamless mobile app! Whether you’re looking to claim your Ozwin no deposit bonus or dive into the action with Ozwin Casino 100 free spins, our platform offers endless entertainment.

Access your account effortlessly with Ozwin login and explore exclusive offers like Ozwin no deposit bonus codes. For Australian players, ozwin casino login australia ensures a tailored gaming experience.

Join Oz Win today and unlock a world of rewards, convenience, and excitement. Download the Ozwin Casino mobile app now and start your winning journey!

Discover the Ultimate Gaming Experience with Ozwin Casino Australia Mobile App

Experience the thrill of gaming anytime, anywhere with the Ozwin Casino Australia Mobile App. Whether you’re a seasoned player or new to online casinos, Ozwin offers an unparalleled gaming adventure right at your fingertips.

  • Access your favorite games instantly with Ozwin login or Ozwin casino login Australia.
  • Claim exclusive rewards like Ozwin no deposit bonus codes and Ozwin casino 100 free spins.
  • Enjoy seamless navigation and optimized gameplay on the Oz Win mobile platform.

Unlock amazing bonuses with Ozwin bonus codes and elevate your gaming experience. With the Ozwin no deposit bonus, you can start playing without spending a dime. Join Ozwin Casino today and dive into a world of endless entertainment!

  • Download the Ozwin Casino Mobile App.
  • Complete your Ozwin casino login to access your account.
  • Explore exciting games and claim your bonuses!
  • Why Ozwin Casino Australia Mobile App is a Game-Changer

    The Ozwin Casino Australia Mobile App revolutionizes online gaming with seamless access to your favorite games anytime, anywhere. With the Ozwin login feature, players can effortlessly sign in and enjoy a smooth, user-friendly experience. The app offers exclusive perks like Ozwin no deposit bonus codes and Ozwin casino 100 free spins, giving players a head start without spending a dime.

    Whether you’re using Ozwin casino login Australia or exploring Ozwin bonus codes, the app ensures you never miss out on exciting promotions. The convenience of Ozwin casino no deposit bonus and the thrill of Oz Win games make this app a must-have for every gaming enthusiast. Experience the future of online casinos with Ozwin – where innovation meets entertainment.

    Seamless Access to Your Favorite Casino Games Anytime, Anywhere

    Experience the ultimate convenience with the Ozwin Casino mobile app, designed to bring your favorite casino games to your fingertips. Whether you’re at home or on the go, Ozwin ensures uninterrupted entertainment with its user-friendly interface and smooth performance.

    Start your gaming journey with the exclusive Ozwin Casino 100 Free Spins offer, available for new players. Don’t miss out on the Ozwin Casino No Deposit Bonus, a perfect way to explore the platform without any initial investment. Use the latest Ozwin No Deposit Bonus Codes to unlock even more rewards.

    Accessing your account is effortless with the Ozwin Casino Login feature. For Australian players, the Ozwin Casino Login Australia option ensures a tailored experience. Simply log in via Oz Win and dive into a world of thrilling games and exciting promotions.

    With Ozwin, you’re always just a tap away from endless fun and big wins. Download the app today and enjoy seamless gaming wherever you are!

    Exclusive Bonuses and Promotions for Mobile Users

    At Ozwin Casino Australia, mobile users are treated to a world of exclusive rewards. Start by completing your Ozwin Casino login Australia to unlock special offers tailored just for you. Whether you’re accessing the platform via Ozwin login on your smartphone or tablet, you’ll find exciting promotions waiting.

    New players can enjoy the Ozwin no deposit bonus, giving you a chance to explore the games without spending a dime. Don’t forget to use the latest Ozwin bonus codes to maximize your rewards. For those seeking extra spins, the Ozwin Casino 100 free spins offer is a must-try.

    Regular users of the Ozwin Casino mobile app can also benefit from the Ozwin Casino no deposit bonus codes, ensuring endless opportunities to win. With Oz Win, every login brings you closer to exclusive deals and thrilling gameplay. Stay connected and never miss out on these mobile-exclusive perks!

    User-Friendly Interface Designed for Maximum Enjoyment

    Experience seamless navigation with the Ozwin Casino mobile app, crafted to provide an intuitive and engaging user experience. Whether you’re accessing Ozwin Casino login Australia or exploring the latest Ozwin no deposit bonus offers, the app ensures smooth and hassle-free interactions. Enjoy quick access to your favorite games and features with just a few taps.

    With Ozwin Casino login, you can effortlessly manage your account, claim exclusive promotions like Ozwin Casino 100 free spins, and stay updated on the latest Ozwin no deposit bonus codes. The app’s clean design and responsive layout make it easy to explore all that Oz Win has to offer, ensuring maximum enjoyment for every player.

    From Ozwin Casino no deposit bonus opportunities to secure Ozwin login processes, the app prioritizes convenience and entertainment. Dive into a world of excitement with Ozwin Casino, where every detail is designed to enhance your gaming experience.

    Secure and Reliable Gaming on the Go

    At Ozwin Casino, we prioritize your safety and convenience, ensuring a seamless gaming experience wherever you are. Our mobile app is designed to provide secure and reliable access to your favorite games, along with exclusive offers like the Ozwin Casino no deposit bonus and Ozwin Casino 100 free spins.

    • Enjoy peace of mind with advanced encryption technology protecting your Ozwin Casino login Australia details.
    • Access your account effortlessly with the Ozwin login feature, available anytime, anywhere.
    • Take advantage of Ozwin bonus codes to unlock exciting rewards and promotions.
  • Download the Oz Win app for instant access to a wide range of games and bonuses.
  • Claim your Ozwin no deposit bonus and start playing without any initial deposit.
  • Stay updated with the latest offers, including Ozwin Casino 100 free spins, directly on your mobile device.
  • With Ozwin Casino, you can trust that your gaming experience is both secure and rewarding. Whether you’re logging in via Ozwin Casino login or exploring new games, we’ve got you covered!

    Join the Ozwin Casino Australia Community Today

    Become part of the vibrant Ozwin Casino community and unlock exclusive benefits! Whether you’re a seasoned player or new to the world of online gaming, Ozwin offers something for everyone. Start your journey with the Ozwin Casino login and explore a world of thrilling games and exciting rewards.

    Feature
    Details

    Ozwin Bonus Codes Enhance your gaming experience with exclusive Ozwin bonus codes. Ozwin No Deposit Bonus Codes Claim free rewards without making a deposit using Ozwin no deposit bonus codes. Ozwin Casino 100 Free Spins Enjoy 100 free spins on selected games and boost your chances to oz win. Ozwin Login Australia Access your account seamlessly with the Ozwin Casino login Australia feature.

    Don’t miss out on the excitement! Join Ozwin Casino today and take advantage of the Ozwin no deposit bonus, free spins, and more. Your next big win is just a click away!

    Design and Develop by Ovatheme